package cn.wolfcode.luowowo.website.controller;

import cn.wolfcode.luowowo.article.domain.*;
import cn.wolfcode.luowowo.article.query.StrategyCatalogQuery;
import cn.wolfcode.luowowo.article.query.TravelQuery;
import cn.wolfcode.luowowo.article.service.*;
import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.ArrayList;
import java.util.List;

@Controller
@RequestMapping("/destination")
public class DestinationController {
        @Reference
        private ITravelService travelService;
    @Reference
    private IDestinationService destinationService;
    @Reference
    private IRegionService regionService;
    @Reference
    private IStrategyDetailService strategyDetailService;

    @Reference
    private IStrategyCatalogService strategyCatalogService;
    @RequestMapping("")
    public String index(Model model){
        List<Region> regions = regionService.queryHotRegions();
        model.addAttribute("hotRegions",regions);
        return "destination/index";
    }

  @RequestMapping("getHotDestByRegionId")
public String getHotDestByRegionId(Model model,Long regionId){
      List<Destination> list = destinationService.getDestByRegionId(regionId);
    List<Destination> leftDests =    new ArrayList<>();
    List<Destination> rightDests =    new ArrayList<>();
    if (list!=null && list.size()>0){
        int min = list.size()/2;
        for (int i = 0; i<list.size();i++){
            if (i<min){
                leftDests.add(list.get(i));
            }else {
                rightDests.add(list.get(i));
            }
        }
    }
    model.addAttribute("leftDests",leftDests);
    model.addAttribute("rightDests",rightDests);
    model.addAttribute("regionId",regionId);

      return "destination/hotdestTpl";
    }

    @RequestMapping("/guide")
    public String guide(Model model,Long id){
        List<Destination> toasts = destinationService.getToasts(id);
        model.addAttribute("toasts",toasts);
        model.addAttribute("dest",toasts.remove(toasts.size()-1));

        //catalogs

        List<StrategyCatalog> catalogs = strategyCatalogService.getCatalogByDestId(id);
        model.addAttribute("catalogs",catalogs);
        //selectCatalogByDestId
  List<StrategyDetail> list =     strategyDetailService.getViewnumTop3(id);
    model.addAttribute("strategyDetails",list);


        return "destination/guide";
    }
        @RequestMapping("/surveyPage")
    public String surveyPage(Model model, @ModelAttribute("qo")StrategyCatalogQuery qo){
            List<Destination> toasts = destinationService.getToasts(qo.getDestId());
            Destination dest  = toasts.remove(toasts.size() - 1);
            model.addAttribute("dest",dest);
            model.addAttribute("toasts",toasts);
            return "destination/survey";
        }

        @RequestMapping("/survey")
    public String survey(Model model,@ModelAttribute("qo")StrategyCatalogQuery qo){
            List<StrategyCatalog> catalogs = strategyCatalogService.getCatalogByDestId(qo.getDestId());
            StrategyCatalog catalog =null;
            if (catalogs!=null && catalogs.size()>0){
                for (StrategyCatalog c :catalogs){
                    if (c.getId() == qo.getCatalogId()){
                        catalog=c;
                        model.addAttribute("catalog",c);
                    }
                }
            }
            model.addAttribute("catalogs",catalogs);
            if (catalogs != null){
                List<StrategyDetail> details = catalog.getDetails();
                if(details!=null && details.size() >0){
                    StrategyDetail detail = details.get(0);
                    StrategyContent conent = strategyDetailService.getConent(detail.getId());
                    detail.setStrategyContent(conent);
                    model.addAttribute("detail",detail);
                }
            }


            return "destination/surveyTpl";
        }

        @RequestMapping("travels")
        public  String travels (Model model, @ModelAttribute("qo")TravelQuery qo){

        model.addAttribute("pageInfo",travelService.query(qo));


        return "destination/travelTpl";
        }


}
